import { initFormData } from "@/utils/init"

// 搜索表单hook
export function useUiQueryFormHook(queryForm, queryFormConfig, basePageTableRef) {

    // 校验BasePageTable 是否为有效dom
    const validateBasePageTableDom = () => {
        if (!basePageTableRef || !basePageTableRef.value) {
            console.warn("basePageTableRef 未传入或还未挂载");
            return false
        }
        return true
    }

    // 抽出来一个内部方法，方便复用
    const queryPageTableData = (pamras) => {
        // 校验BasePageTable dom
        if (validateBasePageTableDom()) {
            // 把当前表单数据传给表格组件
            basePageTableRef.value.fetchTableData(pamras);
        }
    };

    // 搜索 hook（点击“查询”按钮）
    const queryHook = () => {
        queryPageTableData(queryForm.value);
    };

    // 重置 hook（点击“重置”按钮）
    const resetHook = () => {
        // 根据表单配置恢复初始值
        queryForm.value = initFormData(queryFormConfig.formItems);
        // 重置后重新查询
        queryPageTableData(null);
    };

    // 查询表单循环每一项 change事件
    const queryFormItemChangeHook = (value, item) => {
        if (validateBasePageTableDom()) {
            basePageTableRef.value.receiveQueryParams(value, item)
        }
    }

    return { queryHook, resetHook, queryFormItemChangeHook }
}